#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    printf("stdin->fd: %d\n", stdin->_fileno);
    printf("stdout->fd: %d\n", stdout->_fileno);
    printf("stderr->fd: %d\n", stderr->_fileno);

    //const char* msg = "hello world\n";
    //write(1, msg, strlen(msg));
    //fputs(msg, stdout);

    //umask(0);
    ////int fd = open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    //int fd = open("log.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    //int fda = open("loga.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    //int fdb = open("logb.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    //if(fd < 0)
    //{
    //    perror("open");
    //    return 1;
    //}
    //printf("fd: %d\n", fd);
    //printf("fda: %d\n", fda);
    //printf("fdb: %d\n", fdb);

    ////const char* msg = "abcdefg";
    ////write(fd, msg, strlen(msg) + 1); // 要不要加1，不需要，\0是C语言的规定，跟文件没有关系 
    //const char* msg = "123";
    //write(fd, msg, strlen(msg));

    //close(fd);

    return 0;
}

//// 只有一个比特位是1
//#define ONE (1 << 0)   // 0000 0001
//#define TWO (1 << 1)   // 0000 0010
//#define THREE (1 << 2) // 0000 0100
//#define FOUR (1 << 3)  // 0000 1000
//
//void Print(int flag)
//{
//    if(flag & ONE)
//        printf("one\n"); // 如果是函数调用，就可以用一个Print函数实现很多的功能
//    if(flag & TWO)
//        printf("two\n");
//    if(flag & THREE)
//        printf("three\n");
//    if(flag & FOUR)
//        printf("four\n");
//}
//
//int main()
//{
//    Print(ONE);
//    printf("\n");
//    Print(ONE|FOUR);
//    printf("\n");
//    Print(ONE|TWO|THREE);
//    printf("\n");
//    Print(ONE|TWO|THREE|FOUR);
//
//    return 0;
//}

//int main(int argc, char* argv[])
//{
//    if(argc != 2)
//    {
//        printf("Usege: %s filename\n", argv[0]);
//        return 1;
//    }
//    //chdir("..");
//    //printf("I am a process, pid: %d\n", getpid());
//
//    //const char* filename = "log.txt";
//    //FILE* fp = fopen(filename, "r");
//    //FILE* fp = fopen(filename, "w");
//    //FILE* fp = fopen(argv[1], "w");
//    FILE* fp = fopen(argv[1], "a");
//
//    if(fp == NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//
//    //while(1)
//    //    sleep(1);
//
//    //while(1)
//    //{
//    //    char buffer[128];
//    //    if(!fgets(buffer, sizeof buffer, fp))
//    //        break;
//    //    printf("from file: %s", buffer);
//    //}
//    
//    int cnt = 1;
//    while(cnt <= 10)
//    {
//        const char* s = "hello world\n";
//        fputs(s, fp);
//        ++cnt;
//    }
//
//    fclose(fp);
//
//    return 0;
//}
